{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# The Very Basics of Musical Instruments Classification using Machine Learning\n",
    "## MFCC, SVM \n",
    "\n",
    "<br>\n",
    "\n",
    "<p align=\"left\">\n",
    "<img src=\"./img/businesscard.jpg\" width=\"300px\" alt=\"Business Card\" align=\"left\" >\n",
    "</p>\n",
    "<br>\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/6XmEj8sqg94\" \n",
       "frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"></iframe>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/6XmEj8sqg94\" \n",
    "frameborder=\"0\" allow=\"accelerometer; encrypted-media; gyroscope; picture-in-picture\"></iframe>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Imports\n",
    "\n",
    "#General\n",
    "import numpy as np\n",
    "import pickle\n",
    "import itertools\n",
    "\n",
    "# System\n",
    "import os, fnmatch\n",
    "\n",
    "# Visualization\n",
    "import seaborn #visualization library, must be imported before all other plotting libraries\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython.core.display import HTML, display\n",
    "\n",
    "# Machine Learning\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import StratifiedShuffleSplit\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import recall_score, precision_score, accuracy_score\n",
    "from sklearn.metrics import confusion_matrix, f1_score, classification_report\n",
    "from sklearn.svm import LinearSVC, SVC\n",
    "from sklearn.externals import joblib\n",
    "\n",
    "# Random Seed\n",
    "from numpy.random import seed\n",
    "seed(1)\n",
    "\n",
    "# Audio\n",
    "import librosa.display, librosa\n",
    "\n",
    "# Configurations\n",
    "path='./audio/london_phill_dataset_multi/'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Auxiliary Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to Display a Website\n",
    "def show_web(url):\n",
    "    html_code='<center><iframe src=\"%s\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>' \\\n",
    "\t\t% (url)\n",
    "    display(HTML(html_code))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Get filenames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "found 600 audio files in ./audio/london_phill_dataset_multi/\n"
     ]
    }
   ],
   "source": [
    "# Get files in data path\n",
    "\n",
    "files = []\n",
    "for root, dirnames, filenames in os.walk(path):\n",
    "    for filename in fnmatch.filter(filenames, '*.mp3'):\n",
    "        files.append(os.path.join(root, filename))\n",
    "\n",
    "print(\"found %d audio files in %s\"%(len(files),path))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Prepare labels from filenames"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get Labels\n",
    "labels =[]\n",
    "classes=['flute','sax','oboe', 'cello','trumpet','viola']\n",
    "color_dict={'cello':'blue', 'flute':'red', 'oboe':'green', 'trumpet':'black', 'sax':'magenta', 'viola':'yellow'}\n",
    "color_list=[]\n",
    "for filename in files:\n",
    "    for name in classes:\n",
    "        if fnmatch.fnmatchcase(filename, '*'+name+'*'):\n",
    "            labels.append(name)\n",
    "            color_list.append(color_dict[name])\n",
    "            break\n",
    "    else:\n",
    "        labels.append('other')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Encode Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6 classes: cello, flute, oboe, sax, trumpet, viola\n"
     ]
    }
   ],
   "source": [
    "# Encode Labels\n",
    "labelencoder = LabelEncoder()\n",
    "labelencoder.fit(labels)\n",
    "print(len(labelencoder.classes_), \"classes:\", \", \".join(list(labelencoder.classes_)))\n",
    "classes_num = labelencoder.transform(labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Parameters for MFCC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Parameters\n",
    "# Signal Processing Parameters\n",
    "fs = 44100         # Sampling Frequency\n",
    "n_fft = 2048       # length of the FFT window\n",
    "hop_length = 512   # Number of samples between successive frames\n",
    "n_mels = 128       # Number of Mel bands\n",
    "n_mfcc = 13        # Number of MFCCs\n",
    "\n",
    "# Machine Learning Parameters\n",
    "testset_size = 0.25 #Percentage of data for Testing\n",
    "n_neighbors=1       # Number of neighbors for kNN Classifier"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Function to Calculate Audio Features: MFCC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define Function to Calculate MFCC, Delta_MFCC and Delta2_MFCC\n",
    "def get_features(y, sr=fs):\n",
    "    S = librosa.feature.melspectrogram(y, sr=fs, n_mels=n_mels)\n",
    "    mfcc = librosa.feature.mfcc(S=librosa.power_to_db(S), n_mfcc=n_mfcc)\n",
    "    feature_vector = np.mean(mfcc,1)\n",
    "    #feature_vector = (feature_vector-np.mean(feature_vector))/np.std(feature_vector)\n",
    "    return feature_vector"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load audio files, calculate features and create feature vectors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 1 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_piano_normal.mp3\n",
      "get 2 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_piano_normal.mp3\n",
      "get 3 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_mezzo-forte_normal.mp3\n",
      "get 4 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_mezzo-forte_normal.mp3\n",
      "get 5 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_forte_normal.mp3\n",
      "get 6 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_minor-trill.mp3\n",
      "get 7 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_fortissimo_normal.mp3\n",
      "get 8 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_fortissimo_normal.mp3\n",
      "get 9 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_piano_normal.mp3\n",
      "get 10 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_mezzo-forte_normal.mp3\n",
      "get 11 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_forte_minor-trill.mp3\n",
      "get 12 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_forte_normal.mp3\n",
      "get 13 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 14 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_fortissimo_normal.mp3\n",
      "get 15 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_forte_normal.mp3\n",
      "get 16 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_forte_normal.mp3\n",
      "get 17 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_fortissimo_normal.mp3\n",
      "get 18 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_forte_normal.mp3\n",
      "get 19 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_fortissimo_normal.mp3\n",
      "get 20 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_normal.mp3\n",
      "get 21 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_mezzo-forte_normal.mp3\n",
      "get 22 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_major-trill.mp3\n",
      "get 23 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_piano_normal.mp3\n",
      "get 24 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_mezzo-forte_normal.mp3\n",
      "get 25 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_fortissimo_normal.mp3\n",
      "get 26 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_piano_normal.mp3\n",
      "get 27 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_mezzo-forte_normal.mp3\n",
      "get 28 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_forte_normal.mp3\n",
      "get 29 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_mezzo-forte_normal.mp3\n",
      "get 30 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_piano_normal.mp3\n",
      "get 31 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_forte_normal.mp3\n",
      "get 32 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_piano_normal.mp3\n",
      "get 33 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_forte_normal.mp3\n",
      "get 34 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_fortissimo_normal.mp3\n",
      "get 35 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_mezzo-forte_normal.mp3\n",
      "get 36 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_15_forte_normal.mp3\n",
      "get 37 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_15_fortissimo_normal.mp3\n",
      "get 38 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_mezzo-forte_normal.mp3\n",
      "get 39 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_piano_normal.mp3\n",
      "get 40 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_fortissimo_normal.mp3\n",
      "get 41 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_15_piano_normal.mp3\n",
      "get 42 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_fortissimo_normal.mp3\n",
      "get 43 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_forte_normal.mp3\n",
      "get 44 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_05_forte_normal.mp3\n",
      "get 45 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_025_piano_normal.mp3\n",
      "get 46 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_mezzo-forte_normal.mp3\n",
      "get 47 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_forte_normal.mp3\n",
      "get 48 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_piano_normal.mp3\n",
      "get 49 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_15_forte_normal.mp3\n",
      "get 50 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_forte_major-trill.mp3\n",
      "get 51 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_15_forte_normal.mp3\n",
      "get 52 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_piano_normal.mp3\n",
      "get 53 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_05_piano_normal.mp3\n",
      "get 54 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_mezzo-forte_normal.mp3\n",
      "get 55 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 56 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_fortissimo_normal.mp3\n",
      "get 57 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_G6_025_mezzo-forte_normal.mp3\n",
      "get 58 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_piano_normal.mp3\n",
      "get 59 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_fortissimo_normal.mp3\n",
      "get 60 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_forte_normal.mp3\n",
      "get 61 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_025_piano_normal.mp3\n",
      "get 62 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_piano_normal.mp3\n",
      "get 63 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_piano_normal.mp3\n",
      "get 64 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_mezzo-forte_normal.mp3\n",
      "get 65 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_mezzo-forte_normal.mp3\n",
      "get 66 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Ds6_05_piano_normal.mp3\n",
      "get 67 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_fortissimo_normal.mp3\n",
      "get 68 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_fortissimo_normal.mp3\n",
      "get 69 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_mezzo-forte_normal.mp3\n",
      "get 70 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_forte_normal.mp3\n",
      "get 71 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_025_piano_normal.mp3\n",
      "get 72 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_fortissimo_normal.mp3\n",
      "get 73 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A6_1_piano_normal.mp3\n",
      "get 74 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_minor-trill.mp3\n",
      "get 75 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_15_forte_normal.mp3\n",
      "get 76 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_fortissimo_normal.mp3\n",
      "get 77 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_05_mezzo-forte_normal.mp3\n",
      "get 78 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_forte_normal.mp3\n",
      "get 79 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_fortissimo_normal.mp3\n",
      "get 80 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_forte_normal.mp3\n",
      "get 81 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_025_forte_normal.mp3\n",
      "get 82 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_1_fortissimo_normal.mp3\n",
      "get 83 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_piano_normal.mp3\n",
      "get 84 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_15_forte_normal.mp3\n",
      "get 85 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_025_forte_normal.mp3\n",
      "get 86 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_05_piano_normal.mp3\n",
      "get 87 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_piano_normal.mp3\n",
      "get 88 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_15_piano_normal.mp3\n",
      "get 89 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A4_15_piano_normal.mp3\n",
      "get 90 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_05_fortissimo_normal.mp3\n",
      "get 91 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 92 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_mezzo-forte_normal.mp3\n",
      "get 93 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_piano_normal.mp3\n",
      "get 94 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_1_forte_normal.mp3\n",
      "get 95 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs5_1_forte_normal.mp3\n",
      "get 96 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs6_1_mezzo-forte_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 97 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_A5_05_piano_normal.mp3\n",
      "get 98 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_As3_1_piano_normal.mp3\n",
      "get 99 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 100 of 600 = ./audio/london_phill_dataset_multi/oboe/oboe_Gs4_1_forte_major-trill.mp3\n",
      "get 101 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D6_05_forte_normal.mp3\n",
      "get 102 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_025_pianissimo_normal.mp3\n",
      "get 103 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_05_forte_normal.mp3\n",
      "get 104 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_15_pianissimo_normal.mp3\n",
      "get 105 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_05_pianissimo_normal.mp3\n",
      "get 106 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 107 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_15_pianissimo_normal.mp3\n",
      "get 108 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_1_pianissimo_normal.mp3\n",
      "get 109 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs4_05_forte_normal.mp3\n",
      "get 110 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_15_pianissimo_normal.mp3\n",
      "get 111 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_025_pianissimo_normal.mp3\n",
      "get 112 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs4_025_forte_normal.mp3\n",
      "get 113 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_025_pianissimo_normal.mp3\n",
      "get 114 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_025_forte_normal.mp3\n",
      "get 115 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_025_forte_normal.mp3\n",
      "get 116 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_15_pianissimo_normal.mp3\n",
      "get 117 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_15_pianissimo_normal.mp3\n",
      "get 118 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_025_pianissimo_normal.mp3\n",
      "get 119 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_05_forte_normal.mp3\n",
      "get 120 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_1_pianissimo_normal.mp3\n",
      "get 121 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_05_forte_normal.mp3\n",
      "get 122 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_025_forte_normal.mp3\n",
      "get 123 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_1_forte_normal.mp3\n",
      "get 124 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A4_05_forte_normal.mp3\n",
      "get 125 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E6_1_forte_normal.mp3\n",
      "get 126 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_1_pianissimo_normal.mp3\n",
      "get 127 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_15_pianissimo_normal.mp3\n",
      "get 128 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds6_05_forte_normal.mp3\n",
      "get 129 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B5_025_forte_normal.mp3\n",
      "get 130 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_05_forte_normal.mp3\n",
      "get 131 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_025_forte_normal.mp3\n",
      "get 132 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_05_pianissimo_normal.mp3\n",
      "get 133 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A4_025_forte_normal.mp3\n",
      "get 134 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_05_forte_normal.mp3\n",
      "get 135 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D6_025_forte_normal.mp3\n",
      "get 136 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_1_pianissimo_normal.mp3\n",
      "get 137 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds6_025_forte_normal.mp3\n",
      "get 138 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_05_mezzo-forte_normal.mp3\n",
      "get 139 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D5_05_forte_normal.mp3\n",
      "get 140 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds5_05_forte_normal.mp3\n",
      "get 141 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_05_pianissimo_normal.mp3\n",
      "get 142 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_025_pianissimo_normal.mp3\n",
      "get 143 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_1_pianissimo_normal.mp3\n",
      "get 144 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_1_forte_normal.mp3\n",
      "get 145 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_025_pianissimo_normal.mp3\n",
      "get 146 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_1_pianissimo_normal.mp3\n",
      "get 147 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_1_forte_normal.mp3\n",
      "get 148 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_15_pianissimo_normal.mp3\n",
      "get 149 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_025_forte_normal.mp3\n",
      "get 150 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_15_pianissimo_normal.mp3\n",
      "get 151 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs6_025_forte_normal.mp3\n",
      "get 152 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_05_pianissimo_normal.mp3\n",
      "get 153 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_025_pianissimo_normal.mp3\n",
      "get 154 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F4_025_pianissimo_normal.mp3\n",
      "get 155 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_05_forte_normal.mp3\n",
      "get 156 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_025_pianissimo_normal.mp3\n",
      "get 157 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_15_pianissimo_normal.mp3\n",
      "get 158 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_025_pianissimo_normal.mp3\n",
      "get 159 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_025_pianissimo_normal.mp3\n",
      "get 160 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B5_025_mezzo-forte_normal.mp3\n",
      "get 161 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_1_pianissimo_normal.mp3\n",
      "get 162 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_1_pianissimo_normal.mp3\n",
      "get 163 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_1_pianissimo_normal.mp3\n",
      "get 164 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_15_mezzo-forte_normal.mp3\n",
      "get 165 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_05_pianissimo_normal.mp3\n",
      "get 166 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_D4_025_forte_normal.mp3\n",
      "get 167 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_05_forte_normal.mp3\n",
      "get 168 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs3_15_pianissimo_normal.mp3\n",
      "get 169 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Cs4_05_forte_normal.mp3\n",
      "get 170 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As5_05_mezzo-forte_normal.mp3\n",
      "get 171 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F4_05_pianissimo_normal.mp3\n",
      "get 172 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_05_pianissimo_normal.mp3\n",
      "get 173 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C6_05_forte_normal.mp3\n",
      "get 174 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_1_pianissimo_normal.mp3\n",
      "get 175 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E3_025_pianissimo_normal.mp3\n",
      "get 176 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As3_05_pianissimo_normal.mp3\n",
      "get 177 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Ds4_05_pianissimo_normal.mp3\n",
      "get 178 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C6_025_forte_normal.mp3\n",
      "get 179 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_025_pianissimo_normal.mp3\n",
      "get 180 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E4_05_pianissimo_normal.mp3\n",
      "get 181 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A3_05_pianissimo_normal.mp3\n",
      "get 182 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_1_pianissimo_normal.mp3\n",
      "get 183 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_E6_025_forte_normal.mp3\n",
      "get 184 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_025_forte_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 185 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_15_pianissimo_normal.mp3\n",
      "get 186 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_025_mezzo-forte_normal.mp3\n",
      "get 187 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B4_025_forte_normal.mp3\n",
      "get 188 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_A5_05_mezzo-forte_normal.mp3\n",
      "get 189 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_025_forte_normal.mp3\n",
      "get 190 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_025_mezzo-forte_normal.mp3\n",
      "get 191 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_05_forte_normal.mp3\n",
      "get 192 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_05_pianissimo_normal.mp3\n",
      "get 193 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 194 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_1_pianissimo_normal.mp3\n",
      "get 195 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_B3_05_forte_normal.mp3\n",
      "get 196 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_F3_05_forte_normal.mp3\n",
      "get 197 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G5_1_mezzo-forte_normal.mp3\n",
      "get 198 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_G3_05_pianissimo_normal.mp3\n",
      "get 199 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_As4_025_forte_normal.mp3\n",
      "get 200 of 600 = ./audio/london_phill_dataset_multi/trumpet/trumpet_C4_15_pianissimo_normal.mp3\n",
      "get 201 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_mezzo-piano_non-vibrato.mp3\n",
      "get 202 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_15_forte_arco-normal.mp3\n",
      "get 203 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_arco-minor-trill.mp3\n",
      "get 204 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_fortissimo_arco-normal.mp3\n",
      "get 205 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_forte_arco-normal.mp3\n",
      "get 206 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_fortissimo_arco-normal.mp3\n",
      "get 207 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 208 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_forte_arco-normal.mp3\n",
      "get 209 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_mezzo-piano_arco-normal.mp3\n",
      "get 210 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_pianissimo_arco-normal.mp3\n",
      "get 211 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_molto-vibrato.mp3\n",
      "get 212 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_forte_arco-normal.mp3\n",
      "get 213 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_fortissimo_arco-normal.mp3\n",
      "get 214 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_pianissimo_arco-normal.mp3\n",
      "get 215 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_fortissimo_arco-normal.mp3\n",
      "get 216 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_pianissimo_arco-normal.mp3\n",
      "get 217 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_fortissimo_arco-normal.mp3\n",
      "get 218 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_pianissimo_arco-normal.mp3\n",
      "get 219 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_forte_arco-normal.mp3\n",
      "get 220 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 221 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_forte_arco-normal.mp3\n",
      "get 222 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_fortissimo_arco-normal.mp3\n",
      "get 223 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_piano_arco-normal.mp3\n",
      "get 224 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_mezzo-piano_arco-normal.mp3\n",
      "get 225 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_forte_arco-normal.mp3\n",
      "get 226 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_forte_arco-normal.mp3\n",
      "get 227 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_forte_arco-normal.mp3\n",
      "get 228 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_fortissimo_arco-normal.mp3\n",
      "get 229 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_pianissimo_arco-normal.mp3\n",
      "get 230 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_forte_arco-normal.mp3\n",
      "get 231 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_mezzo-piano_arco-normal.mp3\n",
      "get 232 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_forte_arco-normal.mp3\n",
      "get 233 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_mezzo-piano_arco-normal.mp3\n",
      "get 234 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_forte_arco-normal.mp3\n",
      "get 235 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_mezzo-piano_arco-normal.mp3\n",
      "get 236 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_pianissimo_arco-normal.mp3\n",
      "get 237 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_fortissimo_arco-normal.mp3\n",
      "get 238 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_pianissimo_arco-normal.mp3\n",
      "get 239 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_fortissimo_arco-normal.mp3\n",
      "get 240 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_mezzo-piano_arco-normal.mp3\n",
      "get 241 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_fortissimo_arco-normal.mp3\n",
      "get 242 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_arco-minor-trill.mp3\n",
      "get 243 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_pianissimo_arco-normal.mp3\n",
      "get 244 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_arco-normal.mp3\n",
      "get 245 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_fortissimo_arco-normal.mp3\n",
      "get 246 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_forte_arco-normal.mp3\n",
      "get 247 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_forte_arco-normal.mp3\n",
      "get 248 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_mezzo-piano_arco-normal.mp3\n",
      "get 249 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_05_mezzo-piano_arco-normal.mp3\n",
      "get 250 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_mezzo-piano_non-vibrato.mp3\n",
      "get 251 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_pianissimo_arco-normal.mp3\n",
      "get 252 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 253 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_fortissimo_arco-normal.mp3\n",
      "get 254 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_fortissimo_arco-normal.mp3\n",
      "get 255 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_025_mezzo-piano_arco-normal.mp3\n",
      "get 256 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_fortissimo_arco-normal.mp3\n",
      "get 257 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_forte_arco-normal.mp3\n",
      "get 258 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_forte_arco-normal.mp3\n",
      "get 259 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_forte_arco-normal.mp3\n",
      "get 260 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_mezzo-piano_arco-normal.mp3\n",
      "get 261 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_mezzo-piano_arco-normal.mp3\n",
      "get 262 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_15_forte_arco-normal.mp3\n",
      "get 263 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_pianissimo_arco-normal.mp3\n",
      "get 264 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_mezzo-forte_arco-harmonic.mp3\n",
      "get 265 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_forte_arco-normal.mp3\n",
      "get 266 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_15_fortissimo_arco-normal.mp3\n",
      "get 267 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_pianissimo_arco-normal.mp3\n",
      "get 268 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_15_mezzo-piano_arco-normal.mp3\n",
      "get 269 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs2_025_pianissimo_arco-normal.mp3\n",
      "get 270 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_pianissimo_arco-normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 271 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_1_fortissimo_arco-normal.mp3\n",
      "get 272 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_05_mezzo-piano_arco-normal.mp3\n",
      "get 273 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_1_pianissimo_arco-normal.mp3\n",
      "get 274 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_forte_arco-normal.mp3\n",
      "get 275 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_1_forte_arco-normal.mp3\n",
      "get 276 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_fortissimo_arco-normal.mp3\n",
      "get 277 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_mezzo-piano_arco-normal.mp3\n",
      "get 278 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_pianissimo_arco-normal.mp3\n",
      "get 279 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-forte_arco-harmonic.mp3\n",
      "get 280 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_forte_arco-normal.mp3\n",
      "get 281 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_pianissimo_arco-normal.mp3\n",
      "get 282 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_025_mezzo-forte_arco-col-legno-battuto.mp3\n",
      "get 283 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_15_piano_arco-normal.mp3\n",
      "get 284 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_05_mezzo-piano_arco-normal.mp3\n",
      "get 285 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_025_pianissimo_arco-normal.mp3\n",
      "get 286 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_1_mezzo-piano_arco-normal.mp3\n",
      "get 287 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_05_pianissimo_arco-normal.mp3\n",
      "get 288 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_1_mezzo-piano_arco-normal.mp3\n",
      "get 289 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_025_pianissimo_arco-normal.mp3\n",
      "get 290 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_mezzo-piano_arco-normal.mp3\n",
      "get 291 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_05_forte_arco-normal.mp3\n",
      "get 292 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A3_1_fortissimo_arco-normal.mp3\n",
      "get 293 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A2_025_pianissimo_arco-normal.mp3\n",
      "get 294 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs3_025_mezzo-piano_arco-normal.mp3\n",
      "get 295 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_forte_arco-normal.mp3\n",
      "get 296 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs5_15_pianissimo_arco-normal.mp3\n",
      "get 297 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_mezzo-piano_arco-normal.mp3\n",
      "get 298 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_15_pianissimo_arco-normal.mp3\n",
      "get 299 of 600 = ./audio/london_phill_dataset_multi/cello/cello_Gs4_05_fortissimo_arco-normal.mp3\n",
      "get 300 of 600 = ./audio/london_phill_dataset_multi/cello/cello_A4_15_mezzo-piano_arco-normal.mp3\n",
      "get 301 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_fortissimo_snap-pizz.mp3\n",
      "get 302 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_piano_arco-normal.mp3\n",
      "get 303 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_arco-normal.mp3\n",
      "get 304 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_mezzo-piano_arco-normal.mp3\n",
      "get 305 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_fortissimo_arco-normal.mp3\n",
      "get 306 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_pianissimo_arco-normal.mp3\n",
      "get 307 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_arco-minor-trill.mp3\n",
      "get 308 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_fortissimo_arco-normal.mp3\n",
      "get 309 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_fortissimo_arco-normal.mp3\n",
      "get 310 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_pianissimo_arco-normal.mp3\n",
      "get 311 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_forte_arco-normal.mp3\n",
      "get 312 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_pianissimo_arco-normal.mp3\n",
      "get 313 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_mezzo-piano_arco-normal.mp3\n",
      "get 314 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_forte_arco-normal.mp3\n",
      "get 315 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_piano_arco-normal.mp3\n",
      "get 316 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_pianissimo_arco-normal.mp3\n",
      "get 317 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_forte_arco-normal.mp3\n",
      "get 318 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_pianissimo_arco-normal.mp3\n",
      "get 319 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_fortissimo_arco-normal.mp3\n",
      "get 320 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_fortissimo_pizz-normal.mp3\n",
      "get 321 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_pianissimo_arco-normal.mp3\n",
      "get 322 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_forte_arco-normal.mp3\n",
      "get 323 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_piano_arco-normal.mp3\n",
      "get 324 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_fortissimo_arco-normal.mp3\n",
      "get 325 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_mezzo-forte_artificial-harmonic.mp3\n",
      "get 326 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_05_mezzo-piano_arco-normal.mp3\n",
      "get 327 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_arco-normal.mp3\n",
      "get 328 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_pianissimo_arco-normal.mp3\n",
      "get 329 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_piano_arco-normal.mp3\n",
      "get 330 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_pizz-normal.mp3\n",
      "get 331 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_piano_arco-normal.mp3\n",
      "get 332 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_fortissimo_arco-normal.mp3\n",
      "get 333 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_15_forte_arco-normal.mp3\n",
      "get 334 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_fortissimo_arco-normal.mp3\n",
      "get 335 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_fortissimo_arco-normal.mp3\n",
      "get 336 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_15_pianissimo_arco-normal.mp3\n",
      "get 337 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_forte_arco-normal.mp3\n",
      "get 338 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_1_piano_pizz-normal.mp3\n",
      "get 339 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_forte_arco-normal.mp3\n",
      "get 340 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_fortissimo_arco-normal.mp3\n",
      "get 341 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_pianissimo_arco-normal.mp3\n",
      "get 342 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_fortissimo_arco-normal.mp3\n",
      "get 343 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_fortissimo_arco-normal.mp3\n",
      "get 344 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_fortissimo_arco-normal.mp3\n",
      "get 345 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_fortissimo_arco-normal.mp3\n",
      "get 346 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_piano_arco-glissando.mp3\n",
      "get 347 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_fortissimo_arco-normal.mp3\n",
      "get 348 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_fortissimo_arco-normal.mp3\n",
      "get 349 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_mezzo-piano_arco-normal.mp3\n",
      "get 350 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_fortissimo_arco-normal.mp3\n",
      "get 351 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_15_fortissimo_arco-normal.mp3\n",
      "get 352 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_piano_arco-normal.mp3\n",
      "get 353 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_arco-major-trill.mp3\n",
      "get 354 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_pianissimo_arco-normal.mp3\n",
      "get 355 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_mezzo-piano_arco-normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 356 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_pizz-normal.mp3\n",
      "get 357 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_piano_arco-normal.mp3\n",
      "get 358 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_025_mezzo-piano_arco-normal.mp3\n",
      "get 359 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_mezzo-piano_arco-normal.mp3\n",
      "get 360 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_pianissimo_arco-normal.mp3\n",
      "get 361 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_15_fortissimo_arco-normal.mp3\n",
      "get 362 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-forte_molto-vibrato.mp3\n",
      "get 363 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_pianissimo_arco-normal.mp3\n",
      "get 364 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_pianissimo_arco-normal.mp3\n",
      "get 365 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_forte_arco-normal.mp3\n",
      "get 366 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_fortissimo_arco-normal.mp3\n",
      "get 367 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_15_mezzo-piano_arco-normal.mp3\n",
      "get 368 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_025_mezzo-piano_arco-normal.mp3\n",
      "get 369 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_pianissimo_arco-normal.mp3\n",
      "get 370 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_piano_arco-glissando.mp3\n",
      "get 371 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_mezzo-piano_non-vibrato.mp3\n",
      "get 372 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_mezzo-piano_non-vibrato.mp3\n",
      "get 373 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_piano_arco-normal.mp3\n",
      "get 374 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_mezzo-piano_arco-normal.mp3\n",
      "get 375 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_15_fortissimo_arco-normal.mp3\n",
      "get 376 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_025_pianissimo_arco-normal.mp3\n",
      "get 377 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_1_fortissimo_snap-pizz.mp3\n",
      "get 378 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_mezzo-piano_arco-normal.mp3\n",
      "get 379 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_mezzo-piano_arco-normal.mp3\n",
      "get 380 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_forte_arco-normal.mp3\n",
      "get 381 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_piano_arco-normal.mp3\n",
      "get 382 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_05_pianissimo_arco-normal.mp3\n",
      "get 383 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_05_forte_arco-normal.mp3\n",
      "get 384 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_025_pianissimo_arco-normal.mp3\n",
      "get 385 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_pianissimo_arco-normal.mp3\n",
      "get 386 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs3_15_pianissimo_arco-normal.mp3\n",
      "get 387 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_05_piano_arco-normal.mp3\n",
      "get 388 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_1_mezzo-forte_molto-vibrato.mp3\n",
      "get 389 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A5_1_forte_arco-normal.mp3\n",
      "get 390 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_fortissimo_arco-normal.mp3\n",
      "get 391 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_05_piano_arco-normal.mp3\n",
      "get 392 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs6_1_forte_arco-normal.mp3\n",
      "get 393 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_05_pianissimo_arco-normal.mp3\n",
      "get 394 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_fortissimo_arco-normal.mp3\n",
      "get 395 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Ds3_05_fortissimo_arco-normal.mp3\n",
      "get 396 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs4_1_piano_arco-normal.mp3\n",
      "get 397 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A4_025_piano_arco-normal.mp3\n",
      "get 398 of 600 = ./audio/london_phill_dataset_multi/viola/viola_A3_15_piano_arco-normal.mp3\n",
      "get 399 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_025_fortissimo_arco-normal.mp3\n",
      "get 400 of 600 = ./audio/london_phill_dataset_multi/viola/viola_Gs5_1_pianissimo_arco-normal.mp3\n",
      "get 401 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_forte_normal.mp3\n",
      "get 402 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_pianissimo_normal.mp3\n",
      "get 403 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_mezzo-forte_normal.mp3\n",
      "get 404 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_mezzo-piano_normal.mp3\n",
      "get 405 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_mezzo-forte_normal.mp3\n",
      "get 406 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_forte_normal.mp3\n",
      "get 407 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_forte_normal.mp3\n",
      "get 408 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_forte_normal.mp3\n",
      "get 409 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_pianissimo_normal.mp3\n",
      "get 410 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_forte_normal.mp3\n",
      "get 411 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_pianissimo_normal.mp3\n",
      "get 412 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_fortissimo_minor-trill.mp3\n",
      "get 413 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_piano_normal.mp3\n",
      "get 414 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_mezzo-forte_normal.mp3\n",
      "get 415 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_forte_normal.mp3\n",
      "get 416 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_pianissimo_normal.mp3\n",
      "get 417 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_pianissimo_normal.mp3\n",
      "get 418 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_forte_normal.mp3\n",
      "get 419 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_mezzo-forte_normal.mp3\n",
      "get 420 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_forte_normal.mp3\n",
      "get 421 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_mezzo-forte_normal.mp3\n",
      "get 422 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_pianissimo_normal.mp3\n",
      "get 423 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_mezzo-forte_normal.mp3\n",
      "get 424 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_piano_normal.mp3\n",
      "get 425 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_mezzo-piano_normal.mp3\n",
      "get 426 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_piano_normal.mp3\n",
      "get 427 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_pianissimo_normal.mp3\n",
      "get 428 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_mezzo-piano_normal.mp3\n",
      "get 429 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_piano_normal.mp3\n",
      "get 430 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_mezzo-piano_normal.mp3\n",
      "get 431 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_pianissimo_normal.mp3\n",
      "get 432 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_piano_normal.mp3\n",
      "get 433 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_pianissimo_normal.mp3\n",
      "get 434 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_mezzo-forte_normal.mp3\n",
      "get 435 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_025_mezzo-piano_normal.mp3\n",
      "get 436 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_piano_normal.mp3\n",
      "get 437 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_piano_normal.mp3\n",
      "get 438 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_mezzo-forte_normal.mp3\n",
      "get 439 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_forte_normal.mp3\n",
      "get 440 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_pianissimo_normal.mp3\n",
      "get 441 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_piano_normal.mp3\n",
      "get 442 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_piano_normal.mp3\n",
      "get 443 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_piano_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 444 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_piano_normal.mp3\n",
      "get 445 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_mezzo-piano_normal.mp3\n",
      "get 446 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_mezzo-piano_normal.mp3\n",
      "get 447 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_forte_normal.mp3\n",
      "get 448 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_025_pianissimo_normal.mp3\n",
      "get 449 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_forte_normal.mp3\n",
      "get 450 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_mezzo-piano_normal.mp3\n",
      "get 451 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 452 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_mezzo-forte_normal.mp3\n",
      "get 453 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_mezzo-forte_normal.mp3\n",
      "get 454 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_forte_normal.mp3\n",
      "get 455 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_piano_normal.mp3\n",
      "get 456 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_piano_normal.mp3\n",
      "get 457 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 458 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_mezzo-forte_normal.mp3\n",
      "get 459 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_mezzo-piano_normal.mp3\n",
      "get 460 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_pianissimo_normal.mp3\n",
      "get 461 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_mezzo-forte_normal.mp3\n",
      "get 462 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_mezzo-forte_normal.mp3\n",
      "get 463 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_mezzo-piano_normal.mp3\n",
      "get 464 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_forte_normal.mp3\n",
      "get 465 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_1_piano_normal.mp3\n",
      "get 466 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_pianissimo_normal.mp3\n",
      "get 467 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_forte_normal.mp3\n",
      "get 468 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_forte_normal.mp3\n",
      "get 469 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_mezzo-forte_normal.mp3\n",
      "get 470 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_05_pianissimo_normal.mp3\n",
      "get 471 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_05_pianissimo_normal.mp3\n",
      "get 472 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_15_piano_normal.mp3\n",
      "get 473 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_mezzo-piano_normal.mp3\n",
      "get 474 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_piano_normal.mp3\n",
      "get 475 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_05_pianissimo_normal.mp3\n",
      "get 476 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_mezzo-piano_normal.mp3\n",
      "get 477 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_mezzo-piano_normal.mp3\n",
      "get 478 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_piano_normal.mp3\n",
      "get 479 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_forte_normal.mp3\n",
      "get 480 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_forte_normal.mp3\n",
      "get 481 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_15_pianissimo_normal.mp3\n",
      "get 482 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_mezzo-forte_normal.mp3\n",
      "get 483 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_025_mezzo-piano_normal.mp3\n",
      "get 484 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_15_forte_normal.mp3\n",
      "get 485 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_025_forte_normal.mp3\n",
      "get 486 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_piano_normal.mp3\n",
      "get 487 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_15_mezzo-forte_normal.mp3\n",
      "get 488 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_1_piano_normal.mp3\n",
      "get 489 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_pianissimo_normal.mp3\n",
      "get 490 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_15_mezzo-forte_normal.mp3\n",
      "get 491 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_05_forte_normal.mp3\n",
      "get 492 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_15_mezzo-forte_normal.mp3\n",
      "get 493 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_forte_normal.mp3\n",
      "get 494 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs6_05_piano_normal.mp3\n",
      "get 495 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs4_025_mezzo-piano_normal.mp3\n",
      "get 496 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A4_1_mezzo-forte_normal.mp3\n",
      "get 497 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_forte_normal.mp3\n",
      "get 498 of 600 = ./audio/london_phill_dataset_multi/flute/flute_Gs5_1_pianissimo_normal.mp3\n",
      "get 499 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A6_05_pianissimo_normal.mp3\n",
      "get 500 of 600 = ./audio/london_phill_dataset_multi/flute/flute_A5_1_piano_normal.mp3\n",
      "get 501 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_fortissimo_normal.mp3\n",
      "get 502 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_pianissimo_normal.mp3\n",
      "get 503 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_forte_normal.mp3\n",
      "get 504 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_fortissimo_normal.mp3\n",
      "get 505 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_pianissimo_subtone.mp3\n",
      "get 506 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_piano_normal.mp3\n",
      "get 507 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_pianissimo_normal.mp3\n",
      "get 508 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_fortissimo_normal.mp3\n",
      "get 509 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_pianissimo_normal.mp3\n",
      "get 510 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_piano_normal.mp3\n",
      "get 511 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_piano_normal.mp3\n",
      "get 512 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_pianissimo_normal.mp3\n",
      "get 513 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_piano_normal.mp3\n",
      "get 514 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_mezzo-piano_normal.mp3\n",
      "get 515 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_piano_normal.mp3\n",
      "get 516 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_1_pianissimo_normal.mp3\n",
      "get 517 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_forte_normal.mp3\n",
      "get 518 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_forte_normal.mp3\n",
      "get 519 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_fortissimo_normal.mp3\n",
      "get 520 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_pianissimo_normal.mp3\n",
      "get 521 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_mezzo-forte_normal.mp3\n",
      "get 522 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_forte_normal.mp3\n",
      "get 523 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_mezzo-forte_slap-tongue.mp3\n",
      "get 524 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_fortissimo_normal.mp3\n",
      "get 525 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_forte_normal.mp3\n",
      "get 526 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_1_piano_normal.mp3\n",
      "get 527 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_025_fortissimo_normal.mp3\n",
      "get 528 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_piano_normal.mp3\n",
      "get 529 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_15_fortissimo_normal.mp3\n",
      "get 530 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_forte_normal.mp3\n",
      "get 531 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_pianissimo_normal.mp3\n",
      "get 532 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_15_pianissimo_normal.mp3\n",
      "get 533 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_mezzo-piano_normal.mp3\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "get 534 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_forte_normal.mp3\n",
      "get 535 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_piano_normal.mp3\n",
      "get 536 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_forte_normal.mp3\n",
      "get 537 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_piano_normal.mp3\n",
      "get 538 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_forte_normal.mp3\n",
      "get 539 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds5_1_forte_minor-trill.mp3\n",
      "get 540 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_piano_normal.mp3\n",
      "get 541 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_pianissimo_normal.mp3\n",
      "get 542 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_forte_normal.mp3\n",
      "get 543 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_pianissimo_normal.mp3\n",
      "get 544 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_025_forte_normal.mp3\n",
      "get 545 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_piano_normal.mp3\n",
      "get 546 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_15_fortissimo_normal.mp3\n",
      "get 547 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_1_piano_normal.mp3\n",
      "get 548 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_pianissimo_normal.mp3\n",
      "get 549 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_forte_normal.mp3\n",
      "get 550 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_pianissimo_normal.mp3\n",
      "get 551 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_fortissimo_normal.mp3\n",
      "get 552 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_mezzo-piano_normal.mp3\n",
      "get 553 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_fortissimo_normal.mp3\n",
      "get 554 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_fortissimo_normal.mp3\n",
      "get 555 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_pianissimo_normal.mp3\n",
      "get 556 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_mezzo-forte_normal.mp3\n",
      "get 557 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_fortissimo_normal.mp3\n",
      "get 558 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_forte_normal.mp3\n",
      "get 559 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_forte_normal.mp3\n",
      "get 560 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_piano_normal.mp3\n",
      "get 561 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_fortissimo_normal.mp3\n",
      "get 562 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_forte_normal.mp3\n",
      "get 563 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_forte_normal.mp3\n",
      "get 564 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_piano_normal.mp3\n",
      "get 565 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_forte_normal.mp3\n",
      "get 566 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_15_pianissimo_normal.mp3\n",
      "get 567 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_05_piano_normal.mp3\n",
      "get 568 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_pianissimo_normal.mp3\n",
      "get 569 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A5_05_fortissimo_normal.mp3\n",
      "get 570 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_05_pianissimo_normal.mp3\n",
      "get 571 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_1_forte_normal.mp3\n",
      "get 572 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_forte_normal.mp3\n",
      "get 573 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_025_fortissimo_normal.mp3\n",
      "get 574 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_fortissimo_normal.mp3\n",
      "get 575 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_pianissimo_normal.mp3\n",
      "get 576 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_piano_normal.mp3\n",
      "get 577 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_fortissimo_normal.mp3\n",
      "get 578 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_piano_normal.mp3\n",
      "get 579 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_1_fortissimo_normal.mp3\n",
      "get 580 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_pianissimo_normal.mp3\n",
      "get 581 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_15_fortissimo_normal.mp3\n",
      "get 582 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_15_forte_normal.mp3\n",
      "get 583 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_mezzo-forte_normal.mp3\n",
      "get 584 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_mezzo-piano_normal.mp3\n",
      "get 585 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_mezzo-forte_normal.mp3\n",
      "get 586 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_025_fortissimo_normal.mp3\n",
      "get 587 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A4_1_pianissimo_normal.mp3\n",
      "get 588 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_025_fortissimo_normal.mp3\n",
      "get 589 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_pianissimo_normal.mp3\n",
      "get 590 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_fortissimo_normal.mp3\n",
      "get 591 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_1_pianissimo_normal.mp3\n",
      "get 592 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs5_15_fortissimo_normal.mp3\n",
      "get 593 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_forte_normal.mp3\n",
      "get 594 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds4_05_piano_normal.mp3\n",
      "get 595 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs4_05_mezzo-forte_normal.mp3\n",
      "get 596 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_15_fortissimo_normal.mp3\n",
      "get 597 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_05_piano_normal.mp3\n",
      "get 598 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Ds5_1_forte_major-trill.mp3\n",
      "get 599 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_Gs3_05_fortissimo_normal.mp3\n",
      "get 600 of 600 = ./audio/london_phill_dataset_multi/sax/saxophone_A3_025_forte_normal.mp3\n",
      "Calculated 600 feature vectors\n"
     ]
    }
   ],
   "source": [
    "# Load audio files, calculate features and create feature vectors\n",
    "feature_vectors = []\n",
    "sound_paths = []\n",
    "for i,f in enumerate(files):\n",
    "    print (\"get %d of %d = %s\"%(i+1, len(files), f))\n",
    "    try:\n",
    "        y, sr = librosa.load(f, sr=fs)\n",
    "        y/=y.max() #Normalize\n",
    "        if len(y) < 2:\n",
    "            print(\"Error loading %s\" % f)\n",
    "            continue\n",
    "        feat = get_features(y, sr)\n",
    "        feature_vectors.append(feat)\n",
    "        sound_paths.append(f)\n",
    "    except Exception as e:\n",
    "        print(\"Error loading %s. Error: %s\" % (f,e))\n",
    "        \n",
    "print(\"Calculated %d feature vectors\"%len(feature_vectors))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Standardization: Zero-Mean and Unit-Variance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Feature vectors shape: (600, 13)\n"
     ]
    }
   ],
   "source": [
    "# Scale features using Standard Scaler\n",
    "scaler = StandardScaler()\n",
    "scaled_feature_vectors = scaler.fit_transform(np.array(feature_vectors))\n",
    "print(\"Feature vectors shape:\",scaled_feature_vectors.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Save / Load Feature Vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "filename=\"mfcc_feature_vectors.pl\"\n",
    "# Load mfcc features from saved file\n",
    "#with open(filename, \"rb\") as f:\n",
    "#    scaled_feature_vectors = pickle.load( open( filename, \"rb\" ) )\n",
    "\n",
    "# Save feature_vectors for future use\n",
    "with open(filename, \"wb\") as f:\n",
    "    pickle.dump( scaled_feature_vectors, f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train and Test Sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create Train and Test Set\n",
    "splitter = StratifiedShuffleSplit(n_splits=1, test_size=testset_size, random_state=0)\n",
    "splits = splitter.split(scaled_feature_vectors, classes_num)\n",
    "for train_index, test_index in splits:\n",
    "    train_set = scaled_feature_vectors[train_index]\n",
    "    test_set = scaled_feature_vectors[test_index]\n",
    "    train_classes = classes_num[train_index]\n",
    "    test_classes = classes_num[test_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train_set shape: (450, 13)\n",
      "test_set shape: (150, 13)\n",
      "train_classes shape: (450,)\n",
      "test_classes shape: (150,)\n"
     ]
    }
   ],
   "source": [
    "# Check Set Shapes\n",
    "print(\"train_set shape:\",train_set.shape)\n",
    "print(\"test_set shape:\",test_set.shape)\n",
    "print(\"train_classes shape:\",train_classes.shape)\n",
    "print(\"test_classes shape:\",test_classes.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## SVM Classification"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<center><iframe src=\"https://en.wikipedia.org/wiki/Support_vector_machine\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_web(\"https://en.wikipedia.org/wiki/Support_vector_machine\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<center><iframe src=\"https://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html\" width=\"800\" height=\"600\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\">Loading...</iframe></center>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_web(\"https://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# SVM\n",
    "#model_svm = LinearSVC(random_state=0, tol=1e-5, max_iter=5000)\n",
    "svclassifier = SVC(kernel='rbf', C = 10.0, gamma=0.1) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# SVM\n",
    "#model_svm.fit(train_set, train_classes);\n",
    "svclassifier.fit(train_set, train_classes);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save / Load Trained Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['trainedSVM.joblib']"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Save\n",
    "joblib.dump(svclassifier, 'trainedSVM.joblib')\n",
    "#Load\n",
    "#svclassifier = joblib.load('filename.joblib') "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Predict using the Test Set\n",
    "#predicted_labels = model_svm.predict(test_set)\n",
    "predicted_labels = svclassifier.predict(test_set)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Recall:  [1.   1.   0.96 1.   1.   1.  ]\n",
      "Precision:  [1.         1.         1.         1.         0.96153846 1.        ]\n",
      "F1-Score:  [1.         1.         0.97959184 1.         0.98039216 1.        ]\n",
      "Accuracy: 0.99  , 149\n",
      "Number of samples: 150\n"
     ]
    }
   ],
   "source": [
    "# Recall - the ability of the classifier to find all the positive samples\n",
    "print(\"Recall: \", recall_score(test_classes, predicted_labels,average=None))\n",
    "\n",
    "# Precision - The precision is intuitively the ability of the classifier not to \n",
    "#label as positive a sample that is negative\n",
    "print(\"Precision: \", precision_score(test_classes, predicted_labels,average=None))\n",
    "\n",
    "# F1-Score - The F1 score can be interpreted as a weighted average of the precision \n",
    "#and recall\n",
    "print(\"F1-Score: \", f1_score(test_classes, predicted_labels, average=None))\n",
    "\n",
    "# Accuracy - the number of correctly classified samples\n",
    "print(\"Accuracy: %.2f  ,\" % accuracy_score(test_classes, predicted_labels,normalize=True), accuracy_score(test_classes, predicted_labels,normalize=False) )\n",
    "print(\"Number of samples:\",test_classes.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute confusion matrix\n",
    "cnf_matrix = confusion_matrix(test_classes, predicted_labels)\n",
    "np.set_printoptions(precision=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function to Plot Confusion Matrix\n",
    "# http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html\n",
    "def plot_confusion_matrix(cm, classes,\n",
    "                          normalize=False,\n",
    "                          title='Confusion matrix',\n",
    "                          cmap=plt.cm.Blues):\n",
    "    \"\"\"\n",
    "    This function prints and plots the confusion matrix.\n",
    "    Normalization can be applied by setting `normalize=True`.\n",
    "    \n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
    "        print(\"Normalized confusion matrix\")\n",
    "    else:\n",
    "        print('Confusion matrix, without normalization')\n",
    "    \"\"\"\n",
    "    #print(cm)\n",
    "\n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title)\n",
    "    plt.colorbar()\n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks, classes, rotation=45)\n",
    "    plt.yticks(tick_marks, classes)\n",
    "\n",
    "    fmt = '.2f' if normalize else 'd'\n",
    "    thresh = cm.max() / 2.\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        plt.text(j, i, format(cm[i, j], fmt),\n",
    "                 horizontalalignment=\"center\",\n",
    "                 color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x936 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot non-normalized confusion matrix\n",
    "plt.figure(figsize=(18,13))\n",
    "plot_confusion_matrix(cnf_matrix, classes=labelencoder.classes_,\n",
    "                      title='Confusion matrix, without normalization')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find wrong predicted samples indexes\n",
    "#wrong_predictions = [i for i, (e1, e2) in enumerate(zip(test_classes, predicted_labels)) if e1 != e2]\n",
    "wrong_predictions = [i for i, (e1, e2) in enumerate(zip(predicted_labels,test_classes)) if e1 != e2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['oboe']\n",
      "[4]\n",
      "['trumpet']\n",
      "['./audio/london_phill_dataset_multi/oboe/oboe_As3_05_mezzo-forte_normal.mp3']\n"
     ]
    }
   ],
   "source": [
    "# Find wrong predicted audio files\n",
    "print(np.array(labels)[test_index[wrong_predictions]])\n",
    "print(predicted_labels[wrong_predictions].T)\n",
    "print(labelencoder.inverse_transform(predicted_labels[wrong_predictions]))\n",
    "print(np.array(files)[test_index[wrong_predictions]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
